package com.kuaimacode.kframework.util;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 12786 on 2019/4/2.
 * @version 1.0
 */
public class PrimaryIDUtil {
    /**
     * 纳秒 + 3位随机数
     * @return
     */
    public static String getNanoTimeId() {
        long nanoTime = System.nanoTime();
        int randomInt = (int) ((Math.random() * 9 + 1) * 100);
        return String.format("%s%s", nanoTime, randomInt);
    }

    /**
     * 格式化时间格式为yyyyMMddHHmmss + 纳秒 + 3为随机数
     * @return
     */
    public static String getId() {
        String id = String.format("%s%s", getDateToStrFORMAT(new Date(), "yyyyMMddHHmmss"), getNanoTimeId());
        if(id.length() > 32){
            id = id.substring(0,32);
        }
        return id;
    }

    /**
     * @Description 把日期转换为指定格式的字符串
     * @return String-Date
     */
    public static String getDateToStrFORMAT(Date date, String format) {
        if (date != null) {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.format(date);
        }
        return null;
    }

}
